/*
101个正整数，
其中两两相同的正整数有50对，
也就是说101个数当中只有一个数没有与之相同的数，
以最快的方法找到这个数 
*/

#include "junix.h"
using namespace std;

int f(int v[], int size) {
	unsigned int result=0;
	assert(size>2);
	result = v[0]^v[1];
	for (int i=2;i<size;i++) {
		result ^= static_cast<unsigned int>(v[i]);
	}

	for (int i=0;i<size;i++) {
		unsigned int ret=result^static_cast<unsigned int>(v[i]);
		if (ret==0) return i;
	}

	return -1;
}

int main(int argc, char **argv)
{
	int v[] = {1,30,1,2,53,9,3,4,30,3,2,4,9};
	const int sz = sizeof(v)/sizeof(v[0]);

	int index = f(v,sz);
	cout<<"v["<<index<<"]="<<v[index]<<endl;;
}
